In a distributed computation system, a network device (e.g., a server) typically interacts with thousands of client devices. The network device may also provide updates to the software programs installed on client devices. The updates can be for the purposes of performance upgrade, bug fixing, etc.
With current technologies, a typical process of updating a software program includes the client device halting the execution of the software program, and then updating a software development kit (SDK).
There are a number of disadvantages with the conventional processes of updating a software program. First, the user may experience service interruption when the execution of the software program is halted. As a result, the user experience will be severely degraded. Second, it becomes very complicated and difficult to manage a version of the software at the client devices when performing the software update across a large number of client devices.